﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace KPIS.GERP.SECURITY.MODAL
{
    public class UserWithRoles
    {
        public int UserSeq { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public string FullName { get; set; }
        public string Position { get; set; }
        public string JobSite { get; set; }
        public List<RolesInUser> RolesInUser { get; set; }

        public List<string> System
        {
            get
            {
                List<string> system = new List<string>();
                foreach (RolesInUser riu in RolesInUser)
                {
                    if (system.All(o => o != riu.System))
                    {
                        system.Add(riu.System);
                    }
                }

                Dictionary<int, string> systemOrderer = new Dictionary<int, string>();
                int i = 9;
                foreach(var s in system)
                {
                    switch (s)
                    {
                        case "ESS": systemOrderer.Add(1, s);
                            break;
                        case "GHRMS": systemOrderer.Add(2, s);
                            break;
                        case "GBMS":systemOrderer.Add(3, s);
                            break;
                        case "GIMS":systemOrderer.Add(4, s);
                            break; 
                        case "GFMS":systemOrderer.Add(5, s);
                            break;
                        case "GAMS":systemOrderer.Add(6, s);
                            break;
                        case "ADMIN":systemOrderer.Add(7, s);
                            break;
                        case "APPROVAL":systemOrderer.Add(8, s);
                            break;
                        default:systemOrderer.Add(i++, s);
                            break;
                    }
                }


                return systemOrderer.OrderBy(o => o.Key).Select(s => s.Value).ToList();
            }
        }

        public string RolesOfSystem(string system)
        {
            string rolesTemp = "";
            foreach (RolesInUser riu in RolesInUser.Where(o => o.System == system))
            {
                rolesTemp += riu.RoleDescription + ", ";
            }
            return rolesTemp.Length > 2 ? rolesTemp.Substring(0, rolesTemp.Length - 2) : rolesTemp;
        }

        public string SystemWord(string system)
        {
            switch (system)
            {
                case "ESS":
                    return "ESS : ระบบบริการออนไลน์";
                case "GHRMS":
                    return "GHRMS : ระบบบริหารทรัพยากรบุคคล";
                case "GBMS":
                    return "GBMS : ระบบบริหารงานงบประมาณ";
                case "GIMS":
                    return "GIMS : ระบบบริหารงานพัสดุ";
                case "GFMS":
                    return "GFMS : ระบบบริหารงานการเงิน";
                case "GAMS":
                    return "GAMS : ระบบบริหารงานบัญชี";
                case "ADMIN":
                    return "ADMIN : ผู้ดูแลระบบ";
                case "APPROVAL":
                    return "APPROVAL : งานคำสั่ง";
                default:
                    return system;
            }
        }
    }

    public class RolesInUser
    {
        public int UserSeq { get; set; }
        public string System { get; set; }
        public string RoleDescription { get; set; }
    }
}
